# coding: utf8
'''分页处理统一操作方法'''

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage

def paging(data, pre_page_num, page=1):
	'''
		分页处理 并返回分页结果
		data: 分页总数据 惰性查询
		per_page_num: 每页数量
		page: 返回第几页 默认返回第一页
	'''

	# 当少于多少条时, 合并到上一页, 30条以内少于三分之一, 超过30条按10条算
	merge2upper_under_num = int(round(pre_page_num / 3.0)) if pre_page_num < 30 else 10
	paginator = Paginator(object_list=data,
						  per_page=pre_page_num,
						  orphans=merge2upper_under_num)

	try:
		results = paginator.page(page)
	except PageNotAnInteger:
		results = paginator.page(1)
	except EmptyPage:
		results = paginator.page(paginator.num_pages)

	return results

def paging_plus(data, pre_page_num, page=1):
	'''分页处理 高效版 plus版本'''
	return ''